package com.ldxiwxr.system.service;

import com.ldxiwxr.common.common.Result;
import com.ldxiwxr.system.dto.UserDto;
import com.ldxiwxr.system.entity.User;
import com.ldxiwxr.system.entity.UserInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * UserService接口
 * @author SuBanxia
 */
public interface IUserService{

    /**
     * 登录
     * @param username 用户名
     * @param password 密码
     * @param code 验证码
     * @param request 请求
     */
    public Result<?> login(String username, String password, String code, Boolean isRem, HttpServletRequest request);

    /**
     * 改变用户相关登录信息
     * @param user 用户
     */
    public void updateUserLoginInfo(User user);

    /**
     * 忘记密码采用绑定手机登录，并更改密码
     * @param phoneNumber 登陆手机号
     * @param msgCode 短信验证码
     * @param newPassword 新密码
     */
    public Result<?> loginByForgetPwd(String phoneNumber, String msgCode, String newPassword);

    /**
     * 发送信息
     * @param phoneNumber 电话号码
     * @param msgType 信息类型
     */
    public void sendMsg(String phoneNumber, String msgType);

    /**
     * 登出功能
     * @return Result结果
     */
    public Result<?> logout();

    /**
     * 获取用户信息
     * @return User 用户
     */
    public User getUser();


    /**
     * 注册功能
     * @param userName 用户名
     * @param phoneNumber 电话号码
     * @param msgCode 验证码
     * @param password 密码
     * @return Result 结果
     */
    public Result<?> register(String userName, String phoneNumber, String msgCode, String password);

    /**
     * 添加用户
     * @param user 用户类
     */
    public void addUser(User user);

    /**
     * 添加用户信息
     * @param userInfo 用户信息
     */
    public void addUserInfo(UserInfo userInfo);

    /**
     * 修改用户头像
     * @param avatarFileName 头像文件名
     */
    public void updateUserAvatar(String avatarFileName);

    /**
     *  查询所有用户
     * @param nickName 用户昵称
     * @param id 用户编号
     * @return 用户集合
     */
    public List<UserDto> getAllUser(String nickName, Integer id);


    /**
     * 通过ip地址获取用户经纬度
     * @param ip ip 地址
     * @return 结果集
     */
    public Result<?> getUserIp(String ip);
}
